Log in Register Dashboard Temp Share Shortlinks Frames API

HTMLify

app.js
Views: 8 | Author: cody
const hourEl = document.querySelector(".hour");
const minuteEl = document.querySelector(".minute");
const secondEl = document.querySelector(".second");
const timeEl = document.querySelector(".time");
const dateEl = document.querySelector(".date");
const circleEl = document.querySelector(".circle");

const toggleBtn = document.querySelector(".toggle");

const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

toggleBtn.addEventListener("click", (e) => {
  const html = document.querySelector("html");
  html.classList.toggle("dark");

  //1 Update button text based on current mode
  // METHOD 1
  toggleBtn.innerHTML = html.classList.contains("dark") ? "Light Mode" : "Dark Mode";

  // METHOD 2
  // if (html.classList.contains("dark")) {
  //   toggleBtn.innerHTML = "Light Mode";
  // } else {
  //   toggleBtn.innerHTML = "Dark Mode";
  // }

  // METHOD 3
  // if (html.classList.contains("dark")) {
  //   e.target.innerHTML = "Light Mode";
  // } else {
  //   e.target.innerHTML = "Dark Mode";
  // }
});

function setTime() {
  const time = new Date();
  const month = time.getMonth();
  const day = time.getDay();
  const date = time.getDate();
  const hours = time.getHours();
  const hoursForClock = hours % 12;
  const minutes = time.getMinutes();
  const seconds = time.getSeconds();
  const ampm = hours >= 12 ? "PM" : "AM";

  hourEl.style.transform = `translate(-50%, -100%) rotate(${scale(hoursForClock, 0, 11, 0, 360)}deg)`;
  minuteEl.style.transform = `translate(-50%, -100%) rotate(${scale(minutes, 0, 59, 0, 360)}deg)`;
  secondEl.style.transform = `translate(-50%, -100%) rotate(${scale(seconds, 0, 59, 0, 360)}deg)`;

  timeEl.innerHTML = `${hoursForClock}:${minutes < 10 ? `0${minutes}` : minutes} ${ampm}`;
  dateEl.innerHTML = `${days[day]}, ${months[month]} <span class="circle">${date}</span>`;
}

const scale = (num, in_min, in_max, out_min, out_max) => {
  return ((num - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min;
};

setTime();
setInterval(setTime, 1000);

Comments